package com.zhentao.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建 CorsConfiguration 对象，配置跨域规则
        CorsConfiguration config = new CorsConfiguration();
        // 允许的源（前端域名），* 表示允许所有，生产环境建议明确具体域名
        config.addAllowedOrigin("*"); 
        // 允许的请求头，* 表示允许所有自定义、默认请求头
        config.addAllowedHeader("*"); 
        // 允许的 HTTP 方法，如 GET、POST、PUT 等
        config.addAllowedMethod("*"); 
        // 是否允许发送 Cookie，跨域携带 Cookie 时需配置为 true，且前端请求也要开启 withCredentials
        config.setAllowCredentials(true); 

        // 2. 创建 UrlBasedCorsConfigurationSource，设置路径匹配规则
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对所有路径生效（可根据需求调整，如 /api/** 只对 api 路径下生效）
        source.registerCorsConfiguration("/**", config); 

        // 3. 返回 CorsFilter
        return new CorsFilter(source);
    }
}